package com.lagou.zkutils;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

public class GetCuratorClient {

    /**
     *  提供者和消费者，都持有zookeeper客户端对象
     */

    // 在服务端创建节点时候，作为父节点，例如：/lg-rpc/ip:port
    public static String path = "/lg-rpc";

    public static CuratorFramework getZkClient(){
        RetryPolicy exponentialBackoffRetry = new ExponentialBackoffRetry(1000, 3); // 用接口接收返回值

        // 使用 fluent 编程风格
        CuratorFramework client = CuratorFrameworkFactory.builder()
                .connectString("127.0.0.1:2181")
                .sessionTimeoutMs(50000)
                .connectionTimeoutMs(30000)
                .retryPolicy(exponentialBackoffRetry)
                .namespace("base")  // 设置了独立的命名该空间  /base 当前这个客户端，对zookeeper数据节点的任何操作，都是相对于该目录进行的 有利于实现不同的zookeeper的业务隔离
                .build();
        client.start();
        System.out.println("使用fluent编程风格会话建立");
        return client;
    }

}
